#include "Arduino.h"
#include "lvgl.h"
#include "Button/button.h"
#include "Display/Display.h"
#include "Startpage/Startpage.h"
#include "Weatherpage/Weatherpage.h"
#include "Resource/ResourcePool.h"

UART SerialDebug(12, 13, 0, 0);

// #########################################################################
// Setup
// #########################################################################
void setup() {
	
  	// 调试串口初始化
    SerialDebug.begin(115200);
    SerialDebug.println("Weather Project");
	
	// WIFI初始化
	// StartpageInit();
	// lvgl和屏幕初始化
	SerialDebug.println("lvgl Init");
    Lvgl_Init(); 
	// 资源池初始化

	
  /* Create simple label */
  lv_obj_t *label = lv_label_create(lv_scr_act());
  lv_label_set_text(label, "Hello Arduino! ");
  lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);
	SerialDebug.println("Resource Init");
	Resource.Init();
	// 天气界面初始化
	// SerialDebug.println("Weather Init");
	// WeatherInit();
	// //
	// SerialDebug.println("shi jia zhuang show");
	// WeatherShow("石家庄", &Sjz);
	
	// 按键初始化
	Button_Init();
}

// #########################################################################
// Loop
// #########################################################################
#define _Fsatr(var,min,max) var<min?max:var>max?min:var;  // 循环限幅

int citynum = 0;
int lstcitynum = 0;

void loop() {
	// 按键检测切换城市
	uint8_t Key = Button_Check();
	if(Key == 1)
	{
		SerialDebug.println("Button A press");
		citynum = citynum + 1;
	}
	else if(Key == 2)
	{
		SerialDebug.println("Button B press");
		citynum = citynum - 1;
	}

	// 城市变量限幅
	// if(citynum > 4)
	// 	citynum = 0;
	// else if (citynum < 0)
	// 	citynum = 4;
	citynum = _Fsatr(citynum, 0, 4);
	// 城市信息切换
	if(lstcitynum != citynum)
	{
		SerialDebug.println(citynum);
		SerialDebug.println("Refush weather");
		switch (citynum)
		{
		case 0:
			WeatherShow("石家庄", &Sjz);
			break;

		case 1:
			WeatherShow("杭州", &Hz);
			break;

		case 2:
			WeatherShow("秦皇岛", &Qhd);
			break;

		case 3:
			WeatherShow("北京", &Bj);
			break;

		case 4:
			WeatherShow("上海", &Sh);
			break;

		default:
			break;
		}
		lstcitynum = citynum;
	}
  	lv_timer_handler();
	delay(5);
}
